// author: shelman
// description：汇集了通用的接口
#pragma once


#include <iostream>
#include <string>
#include <stdint.h>
#include "export_def.h"



/******************************************************************
 * 功能：判断两个浮点数是否相等
 * 输入参数：
 *      dVal1：比较值1
 *      dVal2：比较值2
 * 返回值：
 *      bool：比较结果，true - 相等，false - 不相等
 * ****************************************************************/
API_EXPORT_DECL bool isEqual(double dVal1, double dVal2);

/******************************************************************
 * 功能：判断系统是否大端序（网络序）
 * 注：网络序和Motorala序为大端序，小端为Intel序
 * 返回值：
 *      bool：判断结果，true - 大端序，false - 小端序
 * ****************************************************************/
API_EXPORT_DECL bool isLocalBigEndian();

/******************************************************************
 * 功能：获取UTC格式化当前系统时间
 * 返回值：
 *      std::string：UTC格式化时间，形如：yyyy-MM-ddTHH:mm:ssZ
 * ****************************************************************/
API_EXPORT_DECL std::string getUtcFormatCurSystemTimeISO8601();

/******************************************************************
 * 功能：获取格式化当前系统时间
 * 返回值：
 *      std::string：格式化时间，形如：yyyy-MM-dd HH:mm:ss.zzz
 * ****************************************************************/
API_EXPORT_DECL std::string getFormatCurSystemTime();

/******************************************************************
 * 功能：获取UUID
 * 返回值：
 *      std::string：uuid_v4
 * ****************************************************************/
API_EXPORT_DECL std::string getUUID_V4();

/******************************************************************
 * 功能：获取当前系统毫秒值的时间戳
 * 返回值：
 *      uint64_t：当前系统毫秒值的时间戳
 * ****************************************************************/
API_EXPORT_DECL uint64_t getCurSystemMsTime();

/******************************************************************
 * 功能：获取当前系统秒值的时间戳
 * 返回值：
 *      uint64_t：当前系统秒值的时间戳
 * ****************************************************************/
API_EXPORT_DECL uint64_t getCurSystemSecTime();

/***************************************************************
 * 功能：获取当前进程的PID
 * 返回值：
 *      int：当前进程的PID
 * *************************************************************/
API_EXPORT_DECL int getCurProcessPID();

/***************************************************************
 * 功能：获取当前线程的id
 * 返回值：
 *      uint64_t：当前线程的id
 * *************************************************************/
API_EXPORT_DECL uint64_t getCurrentThreadID();

/***************************************************************
 * 功能：获取当前程序运行进程名称
 * 返回值：
 *      std::string：当前程序运行进程名称
 * *************************************************************/
API_EXPORT_DECL std::string getProcessName();

/***************************************************************
 * 功能：获取当前程序运行路径
 * 返回值：
 *      std::string：当前程序运行路径
 * *************************************************************/
API_EXPORT_DECL std::string getCurrentRunPath();

/***************************************************************
 * 功能：获取系统主机名
 * 返回值：
 *      std::string：主机名
 * *************************************************************/
API_EXPORT_DECL std::string getHostName();

/******************************************************************
 * 功能：获取int类型的随机化数据
 * 输入参数：
 *      iMin：下限
 *      iMax：上限
 * 返回值：
 *      int：随机值
 * ****************************************************************/
API_EXPORT_DECL int getIntRandomNum(int iMin, int iMax);

/******************************************************************
 * 功能：获取double类型的随机化数据
 * 输入参数：
 *      dMin：下限
 *      dMax：上限
 * 返回值：
 *      double：随机值
 * ****************************************************************/
API_EXPORT_DECL double getDoubleRandomNum(double dMin, double dMax);

/***************************************************************
 * 功能：按16进制打印出字符串信息
 * 输入参数：
 *      strData：待打印的数据信息
 * *************************************************************/
API_EXPORT_DECL void printStringHexInfo(const std::string &strData);

